home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Zine 9
/
Zine - Issue 09 (1991-06)(Brainstorm).adf
/
sources
/
stc_killer.s
< prev
next >
Wrap
Text File
|
2022-11-05
|
4KB
|
192 lines
;
;decruncher v1.5 ->systemkiller
; for
;StoneCracker v2.6a/v2.70/v2.71
;
;(c) 1990 Mr.Spiv of Cave
;
;
kst: lea $dff000,a6
move.w #$7fff,d0
move.w d0,$9a(a6)
move.w d0,$96(a6)
move.w d0,$9e(a6)
move.w d0,$9c(a6)
lea $bfd100,a5
move.b #%10000001,(a5)
nop
nop
move.b #%11111001,(a5)
move.l $20.w,a5
lea ksuper(pc),a4
move.l a4,$20.w
ksuper: move.w #$2700,sr
move.l a5,$20.w
ksystem: lea $111111.l,a7
kuser: lea $222222.l,a0
move.l a0,usp
lea kcolour(pc),a0
klocation lea $333333.l,a1
move.l a1,a4
move.w #kdata-kcolour+18-1,d0 ;don't remove 18
ktrans: move.b (a0)+,(a1)+
dbf d0,ktrans
lea 18+kdata(pc),a3
jmp (a4)
kcolour: lea $dff006,a6
moveq #0,d7
moveq #0,d6
moveq #0,d5
move.b 3+kdata(pc),d7
move.b 16+kdata(pc),d5 ;sijoita scanteho
move.b 17+kdata(pc),d6 ;sijoita normteho
move.l a3,a0
cmp.l 2+kworkstart(pc),a0
bls.s kplaceok
move.l 2+kworkstart(pc),a0
move.l 12+kdata(pc),d0
ktrans2: move.b (a3)+,(a0)+
subq.l #1,d0
bne.s ktrans2
move.l 2+kworkstart(pc),a0
kplaceok: add.l 12+kdata(pc),a0 ;crunched lenght (pass3)
move.l 2+kworkend(pc),a1 ;
move.l a1,a2
sub.l 4+kdata(pc),a2 ;sub pass2 crunched lenght
lea kgetnew(pc),a5
lea krorit(pc),a4
move.l -(a0),d0
kdecrunchloop: moveq #0,d1
add.l d0,d0
bne.s kno_ovl1
jsr (a5)
kno_ovl1: bcc.L kheader_0
add.l d0,d0
bne.s kno_ovl2
jsr (a5)
kno_ovl2: bcs.s kheader_1xx
moveq #8-1,d3 ;header 10
moveq #2-1,d4
bra.s kheader_110
kheader_1xx: addx.w d1,d1
add.l d0,d0
bne.s kno_ovl3
jsr (a5)
kno_ovl3: addx.w d1,d1 ;
moveq #9-1,d3
moveq #3-1,d4
cmp.w #2,d1
beq.s kheader_110
moveq #10-1,d3 ;header 1+11
addq.w #1,d4
kheader_110: jsr (a4)
kcopyloop: move.b -1(a1,d2.w),-(a1)
dbf d4,kcopyloop
kcontinue: cmp.l a1,a2
blo.s kdecrunchloop
kworkstart: lea $444444.l,a0 ;
kworkend: lea $555555.l,a2 ;
move.l a0,a3
move.b kdata(pc),d0 ;get pass2 values
move.b 1+kdata(pc),d1 ;
move.b 2+kdata(pc),d2 ;
add.l 8+kdata(pc),a3 ;uncrunched lenght
kbyteback: moveq #0,d7
move.b (a1)+,d4
cmp.b d0,d4
beq.s kbyte1
cmp.b d1,d4
beq.s kbyte2
ktest2: move.b d4,(a0)+
bra.s ktest
kbyte1: move.b (a1)+,d5
beq.s ktest2
move.b (a1)+,d4
bra.s krepeat
kbyte2: move.b (a1)+,d5
beq.s ktest2
move.b d2,d4
krepeat: move.b d5,d7
addq.w #2-1,d7
krepeatloop: move.b d4,(a0)+
dbf d7,krepeatloop
ktest: move.w (a6),$17a(a6)
cmp.l a3,a0
blo.s kbyteback
kclsrest: cmp.l a2,a0 ;bra.s run
bhs.s krun
move.w (a6),$17a(a6)
clr.b (a0)+
bra.s kclsrest
krun:
dmacon: move.w #$7fff,$90(a6)
adkcon: move.w #$7fff,$98(a6)
intena: move.w #$7fff,$94(a6)
kjump: pea $777777.l
status: move.w #$0000,-(a7)
rte
dc.b "-StoneCracker by Mr. Spiv of CAVE-"
kheader_0: add.l d0,d0
bne.s kno_ovl5
jsr (a5)
kno_ovl5: bcc.s kheader_00
addx.w d1,d1
add.l d0,d0
bne.s kno_ovl6
jsr (a5)
kno_ovl6: addx.w d1,d1
cmp.w #2,d1
beq.s knormaldata
move.w d5,d3
jsr (a4)
move.w d2,d4
addq.w #5-1,d4
move.w d7,d3
bra.L kheader_110
knormaldata: move.w d6,d3
jsr (a4)
addq.w #8-1,d2
move.w d2,d4
bra.s kgetbytes
kheader_00: moveq #3-1,d3
jsr (a4)
move.w d2,d4
subq.w #1,d4
and.w #$0007,d4
kgetbytes: moveq #8-1,d3
jsr (a4)
move.b d2,-(a1)
dbf d4,kgetbytes
bra.L kcontinue
kgetnew: move.l -(a0),d0 ;jsr (a5)
move.w (a6),$17a(a6)
move.w #$0010,ccr
addx.l d0,d0
rts
krorit: moveq #0,d2 ;jsr (a4)
krorloop: add.l d0,d0
bne.s kno_ovl7
jsr (a5)
kno_ovl7: addx.w d2,d2
dbf d3,krorloop
rts
kdata: